package com.common.dao;

import java.util.List;

import com.common.dao.base.BaseDAO;
import com.common.dto.AccountInfoDTO;
import com.common.dto.PersonInfoDTO;



public interface AccountInfoDAO extends BaseDAO<AccountInfoDTO> {

	/**
	 * 是否完善初始信息：如手机
	 * 	--完善信息后，自动生成账号accountCode
	 * @author wuronglai
	 * @param personCode
	 * @return 1:完善；0:未完善
	 */
	Integer isInit(String personCode);

	/**
	 * 获取账号信息（accountCode值可能是id,person_code，account_code，phone_num）
	 * @author wuronglai
	 * @param account [id,personCode,accountCode,phoneNum]
	 * @return
	 */
	AccountInfoDTO getAccountInfo(AccountInfoDTO account);
	
	/**
	 * 获取待审核账号列表
	 * @author wuronglai
	 * @return
	 */
	List<AccountInfoDTO> getNoAuditList(AccountInfoDTO account);
	
	/**
	 * 获取已审核记录：0拒绝，1通过，3解绑
	 * @author wuronglai
	 * @return
	 */
	List<AccountInfoDTO> getAuditedList(AccountInfoDTO account);
	
	/**
	 * 拒绝通过审核
	 * @author wuronglai
	 * @param account
	 * @return
	 */
	int updateStateByPersonCode(AccountInfoDTO account);

	/**
	 * 通过personInfo添加记录
	 * @param personInfo
	 * @return
     */
	int insertByPersonInfo(PersonInfoDTO personInfo);

	/**
	 * selectRoleNameByPersonCode
	 */
	AccountInfoDTO selectRoleNameByPersonCode(String personCode);

	/**
	 * 通过personInfo修改记录
	 * @param entity
	 * @return
	 */
	int updateByPersonInfo(PersonInfoDTO entity);

	/**
	 * 根据personCode查询账号信息
	 * @param personCode
	 * @return
     */
	AccountInfoDTO selectByPersonCode(String personCode);

	/**
	 * 条件查询
	 * @param accountInfo
	 * @return
     */
	AccountInfoDTO selectByDTO(AccountInfoDTO accountInfo);

    /**
     * 获取用户的权限列表
     * @param personCode
     * @return
     */
    List<String> selectAuthorityList(String personCode);

	/**
	 * 根据id查询出用户信息
	 * @param id
	 * @return
	 */
	AccountInfoDTO selectById(String id);
}
